home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / serial.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  7KB  |  198 lines

  1. /*
  2.  * include/linux/serial.h
  3.  *
  4.  * Copyright (C) 1992 by Theodore Ts'o.
  5.  * 
  6.  * Redistribution of this file is permitted under the terms of the GNU 
  7.  * Public License (GPL)
  8.  */
  9.  
  10. #ifndef _LINUX_SERIAL_H
  11. #define _LINUX_SERIAL_H
  12.  
  13. #include <linux/types.h>
  14.  
  15.  
  16. struct serial_struct {
  17.     int    type;
  18.     int    line;
  19.     unsigned int    port;
  20.     int    irq;
  21.     int    flags;
  22.     int    xmit_fifo_size;
  23.     int    custom_divisor;
  24.     int    baud_base;
  25.     unsigned short    close_delay;
  26.     char    io_type;
  27.     char    reserved_char[1];
  28.     int    hub6;
  29.     unsigned short    closing_wait; /* time to wait before closing */
  30.     unsigned short    closing_wait2; /* no longer used... */
  31.     unsigned char    *iomem_base;
  32.     unsigned short    iomem_reg_shift;
  33.     unsigned int    port_high;
  34.     unsigned long    iomap_base;    /* cookie passed into ioremap */
  35. };
  36.  
  37. /*
  38.  * For the close wait times, 0 means wait forever for serial port to
  39.  * flush its output.  65535 means don't wait at all.
  40.  */
  41. #define ASYNC_CLOSING_WAIT_INF    0
  42. #define ASYNC_CLOSING_WAIT_NONE    65535
  43.  
  44. /*
  45.  * These are the supported serial types.
  46.  */
  47. #define PORT_UNKNOWN    0
  48. #define PORT_8250    1
  49. #define PORT_16450    2
  50. #define PORT_16550    3
  51. #define PORT_16550A    4
  52. #define PORT_CIRRUS     5    /* usurped by cyclades.c */
  53. #define PORT_16650    6
  54. #define PORT_16650V2    7
  55. #define PORT_16750    8
  56. #define PORT_STARTECH    9    /* usurped by cyclades.c */
  57. #define PORT_16C950    10    /* Oxford Semiconductor */
  58. #define PORT_16654    11
  59. #define PORT_16850    12
  60. #define PORT_RSA    13    /* RSA-DV II/S card */
  61. #define PORT_MAX    13
  62.  
  63. #define SERIAL_IO_PORT    0
  64. #define SERIAL_IO_HUB6    1
  65. #define SERIAL_IO_MEM    2
  66.  
  67. struct serial_uart_config {
  68.     char    *name;
  69.     int    dfl_xmit_fifo_size;
  70.     int    flags;
  71. };
  72.  
  73. #define UART_CLEAR_FIFO        0x01
  74. #define UART_USE_FIFO        0x02
  75. #define UART_STARTECH        0x04
  76. #define UART_NATSEMI        0x08
  77.  
  78. /*
  79.  * Definitions for async_struct (and serial_struct) flags field
  80.  *
  81.  * Define ASYNCB_* for convenient use with {test,set,clear}_bit.
  82.  */
  83. #define ASYNCB_HUP_NOTIFY     0 /* Notify getty on hangups and closes
  84.                     * on the callout port */
  85. #define ASYNCB_FOURPORT         1 /* Set OU1, OUT2 per AST Fourport settings */
  86. #define ASYNCB_SAK         2 /* Secure Attention Key (Orange book) */
  87. #define ASYNCB_SPLIT_TERMIOS     3 /* Separate termios for dialin/callout */
  88. #define ASYNCB_SPD_HI         4 /* Use 56000 instead of 38400 bps */
  89. #define ASYNCB_SPD_VHI         5 /* Use 115200 instead of 38400 bps */
  90. #define ASYNCB_SKIP_TEST     6 /* Skip UART test during autoconfiguration */
  91. #define ASYNCB_AUTO_IRQ         7 /* Do automatic IRQ during
  92.                     * autoconfiguration */
  93. #define ASYNCB_SESSION_LOCKOUT     8 /* Lock out cua opens based on session */
  94. #define ASYNCB_PGRP_LOCKOUT     9 /* Lock out cua opens based on pgrp */
  95. #define ASYNCB_CALLOUT_NOHUP    10 /* Don't do hangups for cua device */
  96. #define ASYNCB_HARDPPS_CD    11 /* Call hardpps when CD goes high  */
  97. #define ASYNCB_SPD_SHI        12 /* Use 230400 instead of 38400 bps */
  98. #define ASYNCB_LOW_LATENCY    13 /* Request low latency behaviour */
  99. #define ASYNCB_BUGGY_UART    14 /* This is a buggy UART, skip some safety
  100.                     * checks.  Note: can be dangerous! */
  101. #define ASYNCB_AUTOPROBE    15 /* Port was autoprobed by PCI or PNP code */
  102. #define ASYNCB_LAST_USER    15
  103.  
  104. /* Internal flags used only by kernel */
  105. #define ASYNCB_INITIALIZED    31 /* Serial port was initialized */
  106. #define ASYNCB_NORMAL_ACTIVE    29 /* Normal device is active */
  107. #define ASYNCB_BOOT_AUTOCONF    28 /* Autoconfigure port on bootup */
  108. #define ASYNCB_CLOSING        27 /* Serial port is closing */
  109. #define ASYNCB_CTS_FLOW        26 /* Do CTS flow control */
  110. #define ASYNCB_CHECK_CD        25 /* i.e., CLOCAL */
  111. #define ASYNCB_SHARE_IRQ    24 /* for multifunction cards, no longer used */
  112. #define ASYNCB_CONS_FLOW    23 /* flow control for console  */
  113. #define ASYNCB_BOOT_ONLYMCA    22 /* Probe only if MCA bus */
  114. #define ASYNCB_FIRST_KERNEL    22
  115.  
  116. #define ASYNC_HUP_NOTIFY    (1U << ASYNCB_HUP_NOTIFY)
  117. #define ASYNC_FOURPORT        (1U << ASYNCB_FOURPORT)
  118. #define ASYNC_SAK        (1U << ASYNCB_SAK)
  119. #define ASYNC_SPLIT_TERMIOS    (1U << ASYNCB_SPLIT_TERMIOS)
  120. #define ASYNC_SPD_HI        (1U << ASYNCB_SPD_HI)
  121. #define ASYNC_SPD_VHI        (1U << ASYNCB_SPD_VHI)
  122. #define ASYNC_SKIP_TEST        (1U << ASYNCB_SKIP_TEST)
  123. #define ASYNC_AUTO_IRQ        (1U << ASYNCB_AUTO_IRQ)
  124. #define ASYNC_SESSION_LOCKOUT    (1U << ASYNCB_SESSION_LOCKOUT)
  125. #define ASYNC_PGRP_LOCKOUT    (1U << ASYNCB_PGRP_LOCKOUT)
  126. #define ASYNC_CALLOUT_NOHUP    (1U << ASYNCB_CALLOUT_NOHUP)
  127. #define ASYNC_HARDPPS_CD    (1U << ASYNCB_HARDPPS_CD)
  128. #define ASYNC_SPD_SHI        (1U << ASYNCB_SPD_SHI)
  129. #define ASYNC_LOW_LATENCY    (1U << ASYNCB_LOW_LATENCY)
  130. #define ASYNC_BUGGY_UART    (1U << ASYNCB_BUGGY_UART)
  131. #define ASYNC_AUTOPROBE        (1U << ASYNCB_AUTOPROBE)
  132.  
  133. #define ASYNC_FLAGS        ((1U << ASYNCB_LAST_USER) - 1)
  134. #define ASYNC_USR_MASK        (ASYNC_SPD_HI|ASYNC_SPD_VHI| \
  135.         ASYNC_CALLOUT_NOHUP|ASYNC_SPD_SHI|ASYNC_LOW_LATENCY)
  136. #define ASYNC_SPD_CUST        (ASYNC_SPD_HI|ASYNC_SPD_VHI)
  137. #define ASYNC_SPD_WARP        (ASYNC_SPD_HI|ASYNC_SPD_SHI)
  138. #define ASYNC_SPD_MASK        (ASYNC_SPD_HI|ASYNC_SPD_VHI|ASYNC_SPD_SHI)
  139.  
  140. #define ASYNC_INITIALIZED    (1U << ASYNCB_INITIALIZED)
  141. #define ASYNC_NORMAL_ACTIVE    (1U << ASYNCB_NORMAL_ACTIVE)
  142. #define ASYNC_BOOT_AUTOCONF    (1U << ASYNCB_BOOT_AUTOCONF)
  143. #define ASYNC_CLOSING        (1U << ASYNCB_CLOSING)
  144. #define ASYNC_CTS_FLOW        (1U << ASYNCB_CTS_FLOW)
  145. #define ASYNC_CHECK_CD        (1U << ASYNCB_CHECK_CD)
  146. #define ASYNC_SHARE_IRQ        (1U << ASYNCB_SHARE_IRQ)
  147. #define ASYNC_CONS_FLOW        (1U << ASYNCB_CONS_FLOW)
  148. #define ASYNC_BOOT_ONLYMCA    (1U << ASYNCB_BOOT_ONLYMCA)
  149. #define ASYNC_INTERNAL_FLAGS    (~((1U << ASYNCB_FIRST_KERNEL) - 1))
  150.  
  151. /*
  152.  * Multiport serial configuration structure --- external structure
  153.  */
  154. struct serial_multiport_struct {
  155.     int        irq;
  156.     int        port1;
  157.     unsigned char    mask1, match1;
  158.     int        port2;
  159.     unsigned char    mask2, match2;
  160.     int        port3;
  161.     unsigned char    mask3, match3;
  162.     int        port4;
  163.     unsigned char    mask4, match4;
  164.     int        port_monitor;
  165.     int    reserved[32];
  166. };
  167.  
  168. /*
  169.  * Serial input interrupt line counters -- external structure
  170.  * Four lines can interrupt: CTS, DSR, RI, DCD
  171.  */
  172. struct serial_icounter_struct {
  173.     int cts, dsr, rng, dcd;
  174.     int rx, tx;
  175.     int frame, overrun, parity, brk;
  176.     int buf_overrun;
  177.     int reserved[9];
  178. };
  179.  
  180. /*
  181.  * Serial interface for controlling RS485 settings on chips with suitable
  182.  * support. Set with TIOCSRS485 and get with TIOCGRS485 if supported by your
  183.  * platform. The set function returns the new state, with any unsupported bits
  184.  * reverted appropriately.
  185.  */
  186.  
  187. struct serial_rs485 {
  188.     __u32    flags;            /* RS485 feature flags */
  189. #define SER_RS485_ENABLED        (1 << 0)
  190. #define SER_RS485_RTS_ON_SEND        (1 << 1)
  191. #define SER_RS485_RTS_AFTER_SEND    (1 << 2)
  192.     __u32    delay_rts_before_send;    /* Milliseconds */
  193.     __u32    padding[6];        /* Memory is cheap, new structs
  194.                        are a royal PITA .. */
  195. };
  196.  
  197. #endif /* _LINUX_SERIAL_H */
  198.